use super::crypt_types::{CRYPT_Data, CRYPT_EAL_EsPara, CRYPT_Range};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CryptEalEntropySource {
    _unused: [u8; 0],
}
pub type CRYPT_EAL_Es = CryptEalEntropySource;
pub type CRYPT_EAL_EsLogFunc = ::std::option::Option<unsafe extern "C" fn(ret: i32)>;
unsafe extern "C" {
    pub fn CRYPT_EAL_EsNew() -> *mut CRYPT_EAL_Es;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_EsFree(es: *mut CRYPT_EAL_Es);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_EsInit(es: *mut CRYPT_EAL_Es) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_EsCtrl(
        es: *mut CRYPT_EAL_Es,
        type_: i32,
        data: *mut ::std::os::raw::c_void,
        len: u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_EsEntropyGet(es: *mut CRYPT_EAL_Es, data: *mut u8, len: u32) -> u32;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EAL_SeedPool {
    _unused: [u8; 0],
}
pub type CRYPT_EAL_SeedPoolCtx = EAL_SeedPool;
unsafe extern "C" {
    pub fn CRYPT_EAL_SeedPoolNew(isCreateNullPool: bool) -> *mut CRYPT_EAL_SeedPoolCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_SeedPoolAddEs(
        ctx: *mut CRYPT_EAL_SeedPoolCtx,
        para: *const CRYPT_EAL_EsPara,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_SeedPoolGetEntropy(
        ctx: *mut CRYPT_EAL_SeedPoolCtx,
        entropy: *mut CRYPT_Data,
        strength: u32,
        lenRange: *const CRYPT_Range,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_SeedPoolFree(ctx: *mut CRYPT_EAL_SeedPoolCtx);
}
